"""
函数
"""


def fun1(a, b):
    """
    求和
    :param a:
    :param b:
    :return:
    """
    return a + b


def fun2(d, b, c):
    global a
    a = 100
    return d, b, c


r1 = fun1(3, 5)
a = 43
r2 = fun2(4, 2, 5)

print(r1)
print(r2)
print(a)


def user_info(name, age, gender):
    print(f'name:{name},age:{age},gender:{gender}')


# 位置参数调用时，参数顺序与个数要和定义一致
user_info('tom', 43, 'nan')

# 关键字参数可以随便排序
user_info(age=18, name='jarry', gender='nan')

# 位置参数和关键字参数混用，位置参数在前
user_info('lili', 17, gender='nv')


# 默认参数：定义时为参数提供默认值，调用时若不输入此值，则取默认
def user_info2(name, age=19, gender="nan"):
    print(f'name:{name},age:{age},gender:{gender}')


user_info2('zs')
user_info2('li', 20)


# 可变参数：参数数量可变
# 使用一个*的可变参数
def user_info3(*args):
    print(args)


# 调用时，使用位置参数，返回元组类型
user_info3(1, 2, 3, 5)


# 使用两个**的可变参数
def user_info4(**kwargs):
    print(kwargs)


# 调用时，使用关键字参数，字典类型
user_info4(name='tom', age=19)
